package com.viknix.threadpool.manager.repository.mapper;

import com.viknix.threadpool.manager.repository.entity.ThreadPoolInfoEntity;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Map;

@Repository
public interface ThreadPoolInfoMapper {
    int deleteByPrimaryKey(Long id);

    int insert(ThreadPoolInfoEntity record);

    int insertSelective(ThreadPoolInfoEntity record);

    ThreadPoolInfoEntity selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(ThreadPoolInfoEntity record);

    int updateByPrimaryKeyWithBLOBs(ThreadPoolInfoEntity record);

    int updateByPrimaryKey(ThreadPoolInfoEntity record);

    /**
     * 查询线程池配置
     *
     * @param threadPoolId 线程池id
     * @param item    项目id
     * @param namespace    命名空间
     * @return 数据库实体类
     */
    ThreadPoolInfoEntity getParameterInfo(@Param("threadPoolId") String threadPoolId, @Param("item") String item, @Param("namespace") String namespace);

    /**
     * 根据 threadPoolId、projectId、namespace更新线程池配置
     *
     * @param entity 线程池配置信息
     * @return 影响记录数
     */
    int updateByIdentification(ThreadPoolInfoEntity entity);

    /**
     * 查询 ConfigInfo
     *
     * @param threadPoolId 线程池id
     * @param item    项目id
     * @param namespace    命名空间
     * @return {@link Map}
     */
    Map<String, Object> getConfigInfo(@Param("threadPoolId") String threadPoolId, @Param("item") String item, @Param("namespace") String namespace);
}